// pages/index/index.js
const app = getApp();

Page({
  data: {
    resources: [],
    filteredResources: [],
    currentType: 'all',
    // 新增公告相关数据
    announcement: '欢迎使用码小仓资源平台，最新上线了10个优质资源，快来体验吧！',
    animationData: {}
  },
  
  // 封装同步风格的请求函数
  requestSync(url, options = {}) {
    return new Promise((resolve, reject) => {
      wx.request({
        url,
        method: options.method || 'GET',
        data: options.data || {},
        header: options.header || {
          'Content-Type': 'application/json'
        },
        success: (res) => {
          // 根据业务需求判断成功条件
          if (res.statusCode === 200) {
            resolve(res.data);
          } else {
            reject(new Error(`请求失败：${res.statusCode}`));
          }
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  },

  // 使用示例（需在 async 函数中）
  async fetchData() {
    try {
      // 写法类似同步调用
      const result = await this.requestSync('https://www.maxiaocang.xyz/file/mcang_data.txt');
      console.log('请求结果：', result);
      // 后续操作...
      app.globalData.resources = result;
      this.setData({
        resources: result,
        filteredResources: result
      });
    } catch (err) {
      console.error('请求出错：', err);
      app.globalData.resources = [];
    }
  },

  onLoad() {
    console.log('index onLoad');
    // 初始化公告滚动动画
    this.initAnnouncementAnimation();

    // 从网络获取资源数据
    this.fetchData();
  },
  
  // 新增公告滚动动画方法
  initAnnouncementAnimation() {
    const animation = wx.createAnimation({
      duration: 15000, // 滚动一次的时间
      timingFunction: 'linear'
    });
    
    this.animation = animation;
    this.scrollAnnouncement();
  },
  
  // 滚动公告
  scrollAnnouncement() {
    // 获取屏幕宽度用于计算滚动距离
    wx.getSystemInfo({
      success: (res) => {
        const screenWidth = res.windowWidth;
        console.log("screenWidth: " + screenWidth);
        // 计算文字长度（大约估算，实际可以更精确）
        const textLength = this.data.announcement.length * 30; // 每个字约30rpx
        
        // 重置动画
        this.animation.translateX(screenWidth).step({ duration: 0 });
        this.setData({
          animationData: this.animation.export()
        });
        
        // 执行滚动动画
        setTimeout(() => {
          this.animation.translateX(-(textLength + screenWidth)).step();
          this.setData({
            animationData: this.animation.export()
          });
          
          // 动画结束后重新开始
          setTimeout(() => {
            this.scrollAnnouncement();
          }, 15000);
        }, 1000);
      }
    });
  },

  // 切换系统类型
  switchType(e) {
    const type = e.currentTarget.dataset.type;
    this.setData({ currentType: type });
    
    // 筛选资源
    let filtered = app.globalData.resources;
    if (type !== 'all') {
      filtered = filtered.filter(item => item.type === type);
    }
    
    this.setData({ filteredResources: filtered });
  },
  
  // 前往详情页
  goToDetail(e) {
    const id = e.currentTarget.dataset.id;
    console.log('goToDetail(e)');
    wx.navigateTo({
      url: `/pages/detail/detail?id=${id}`
    });
  },
  
  // 前往搜索页
  goToSearch() {
    console.log('goToSearch()');
    wx.navigateTo({
      url: '/pages/search/search'
    });
  },
  
  // 预览图片
  previewImage(e) {
    const url = e.currentTarget.dataset.url;
    wx.previewImage({
      urls: [url]
    });
  },
  
  // 分享功能
  onShareAppMessage() {
    return {
      title: '微信小程序资源整合平台',
      path: '/pages/index/index',
      imageUrl: '/images/share.jpg'
    }
  }
})
